// 路由鉴权： 通过路由守卫实现 路由权限控制
import router from './router'
import nprogress from 'nprogress'
//引入进度条样式
import 'nprogress/nprogress.css'
import pinia from './store';
import useUserStore from './store/modules/user';
import setting from './setting';

let userStore = useUserStore(pinia);

nprogress.configure({ showSpinner: false });
// 全局前置守卫
router.beforeEach(async (to, from, next) => {
    document.title = setting.title + ' - ' + to.meta.title; // 设置页面标题
    // 访问某个路由之前的守卫
    // to: 要访问的路由
    // from: 从哪个路由而来
    // next: 放行
    nprogress.start();

    //获取token
    let token = userStore.token;

    let username = userStore.username;
    if (token) {
        // 登录了
        if (to.path == '/login') {
            // 登录了还想去登录页
            next('/')
        } else {
            // 登录了，去其他页面
            if (username) {
                next()
            } else {
                try {
                    await userStore.getUserInfo();
                    next()
                } catch (error) {
                    // token过期了
                    await userStore.userLogout();
                    next({ path: '/login', query: { redirect: to.path } })
                }
            }
        }
    } else {
        if (to.path === '/login') {
            // 没登录，去登录页
            next()
        } else {
            next({ path: '/login', query: { redirect: to.path } })
        }
    }

});
// 全局后置守卫
router.afterEach((to, from) => {
    nprogress.done()
});


// 第一个问题：任意路由跳转进度条显示 --- nprogress
// 第二个问题：路由守卫实现路由权限控制
// 全局路由组件: 登录|404|其他|首页|数据大屏|权限管理 三个子路由| 商品管理 四个子路由

// 未登录只能访问登录页login
// 登录成功不可以访问login

